using System;
using System.Data;
using System.Data.SqlClient;
using SystemFrameworks;
using Common;
using DataAccess;
using Microsoft.ApplicationBlocks.Data;

namespace BusinessRules
{
    public class CofinanciacionProgramas
    {

        #region Params

        private const String FPR_ID_PARAM = "@FPR_ID";
        private const String FPR_ENTIDAD_TERRITORIAL_COFINANCION_VALOR_PARAM = "@FPR_ENTIDAD_TERRITORIAL_COFINANCION_VALOR";
        private const String FPR_ENTIDAD_TERRITORIAL_COFINANCION_PARAM = "@FPR_ENTIDAD_TERRITORIAL_COFINANCION";
        private const String FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_PARAM = "@FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION";
        private const String FPR_ENTIDAD_COOPINTERNACIONAL_PAIS_PARAM = "@FPR_ENTIDAD_COOPINTERNACIONAL_PAIS";
        private const String FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_VALOR_PARAM = "@FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_VALOR";
        private const String FPR_ENTIDAD_OTRA_COFINANCION_PARAM = "@FPR_ENTIDAD_OTRA_COFINANCION";
        private const String FPR_ENTIDAD_OTRA_COFINANCION_VALOR_PARAM = "@FPR_ENTIDAD_OTRA_COFINANCION_VALOR";
        private const String SPZ_ID_PARAM = "@SPZ_ID";

        #endregion

        #region Propiedades

        private string _CadenaConexion;
        public string CadenaConexion
        {
            get { return _CadenaConexion; }
            set { _CadenaConexion = value; }
        }

        #endregion

        #region CofinanciacionProgramas

        public CofinanciacionProgramas(string strCadenaConecxion)
        {
            CadenaConexion = strCadenaConecxion;
        }

        #endregion

        #region ConsultarCofinanciacionProgramasSPZ

        public CofinanciacionProgramasData ConsultarCofinanciacionProgramasSPZ(string decSpzId)
        {
            SqlParameter param1 = new SqlParameter(SPZ_ID_PARAM, decSpzId);
            SqlParameter[] parameters = { param1 };
            CofinanciacionProgramasData objCofinanciacionProgramasData = new CofinanciacionProgramasData();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "SIG_COFINANCIACION_PROGRAMAS_SPZ_ID", objCofinanciacionProgramasData, parameters);
            return objCofinanciacionProgramasData;
        }

        #endregion

        #region ConsultarCofinanciacionProgramasFprId

        public CofinanciacionProgramasData ConsultarCofinanciacionProgramasFprId(string decFprId)
        {
            SqlParameter param1 = new SqlParameter(FPR_ID_PARAM, decFprId);
            SqlParameter[] parameters = { param1 };
            CofinanciacionProgramasData objCofinanciacionProgramasData = new CofinanciacionProgramasData();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "SIG_CONSULTAR_COFINANCIACION_PROGRAMAS_FPR_ID", objCofinanciacionProgramasData, parameters);
            return objCofinanciacionProgramasData;
        }

        #endregion

        #region AdicionarCofinanciacionProgramas

        public decimal AdicionarCofinanciacionProgramas(CofinanciacionProgramasData datos, params SqlTransaction[] objTransaction)
        {
            decimal decIdentificador = 0;
            try
            {
                foreach (DataRow row in datos.Rows)
                {
                    SqlParameter param1 = new SqlParameter(FPR_ID_PARAM, SqlDbType.Decimal);
                    param1.Direction = ParameterDirection.Output;
                    SqlParameter param2;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_TERRITORIAL_COFINANCION_VALOR_FIELD] == null || row[CofinanciacionProgramasData.FPR_ENTIDAD_TERRITORIAL_COFINANCION_VALOR_FIELD].ToString() == "")
                    {
                        param2 = new SqlParameter(FPR_ENTIDAD_TERRITORIAL_COFINANCION_VALOR_PARAM, DBNull.Value);
                    }
                    else
                    {
                        param2 = new SqlParameter(FPR_ENTIDAD_TERRITORIAL_COFINANCION_VALOR_PARAM, row[CofinanciacionProgramasData.FPR_ENTIDAD_TERRITORIAL_COFINANCION_VALOR_FIELD]);
                    }
                        

                    SqlParameter param3 ;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_FIELD] == null || row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_FIELD].ToString() == "")
                    {
                        param3  = new SqlParameter(FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_PARAM,DBNull.Value);
                    }
                    else
                    {
                        param3 = new SqlParameter(FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_PARAM,
                                                           row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_FIELD]);
                    }
                        
                    SqlParameter param4;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_PAIS_FIELD] == null || row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_PAIS_FIELD].ToString() == "")
                    {
                        param4 = new SqlParameter(FPR_ENTIDAD_COOPINTERNACIONAL_PAIS_PARAM,DBNull.Value);
                    }
                    else
                    {
                     param4 = new SqlParameter(FPR_ENTIDAD_COOPINTERNACIONAL_PAIS_PARAM,
                                                           row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_PAIS_FIELD]);   
                    }
                    SqlParameter param5 ;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_FIELD] == DBNull.Value || row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_FIELD].ToString() == "" )
                    {
                        param5 = new SqlParameter(FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_VALOR_PARAM, DBNull.Value);
                    }
                    else
                    {
                        param5  = new SqlParameter(FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_VALOR_PARAM, row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_VALOR_FIELD]);
                    }
                    SqlParameter param6;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_FIELD] == null || row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_FIELD].ToString() ==  "")
                    {
                        param6= new SqlParameter(FPR_ENTIDAD_OTRA_COFINANCION_PARAM, DBNull.Value);
                    }
                    else
                    {
                        param6 =  new SqlParameter(FPR_ENTIDAD_OTRA_COFINANCION_PARAM,
                                                           row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_FIELD]);    
                    }
                    

                    SqlParameter param7;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_VALOR_FIELD] == null || row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_VALOR_FIELD].ToString() == "")
                        param7 = new SqlParameter(FPR_ENTIDAD_OTRA_COFINANCION_VALOR_PARAM, DBNull.Value);
                    else
                        param7 = new SqlParameter(FPR_ENTIDAD_OTRA_COFINANCION_VALOR_PARAM, row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_VALOR_FIELD]);

                    SqlParameter param8;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_TERRITORIAL_COFINANCION_FIELD] == null || row[CofinanciacionProgramasData.FPR_ENTIDAD_TERRITORIAL_COFINANCION_FIELD].ToString() == "")
                        param8 = new SqlParameter(FPR_ENTIDAD_TERRITORIAL_COFINANCION_PARAM, DBNull.Value);
                    else
                        param8 = new SqlParameter(FPR_ENTIDAD_TERRITORIAL_COFINANCION_PARAM, row[CofinanciacionProgramasData.FPR_ENTIDAD_TERRITORIAL_COFINANCION_FIELD]);


                    SqlParameter param9 = new SqlParameter(SPZ_ID_PARAM, row[CofinanciacionProgramasData.SPZ_ID_FIELD]);

                    SqlParameter[] parameters = {
                                                    param1, param2, param3, param4, param5, param6, param7, param8, param9
                                                };

                    if (objTransaction.Length == 0)
                    {
                        SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure,
                                                  "PAS_ADICIONAR_SIG_COFINANCIACION_PROGRAMAS", parameters);
                    }
                    else
                    {
                        SqlHelper.ExecuteNonQuery(objTransaction[0], CommandType.StoredProcedure,
                                                  "PAS_ADICIONAR_SIG_COFINANCIACION_PROGRAMAS", parameters);
                    }

                    decIdentificador = decimal.Parse(param1.Value.ToString());
                }
                return (decIdentificador);

            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ADICIONAR_SIG_COFINANCIACION_PROGRAMAS"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", GetType().FullName), ex);
            }

        }

        #endregion

        #region ActualizarCofinanciacionProgramas

        public decimal ActualizarCofinanciacionProgramas(CofinanciacionProgramasData datos, params SqlTransaction[] objTransaction)
        {

            decimal decIdentificador = 0;
            try
            {
                foreach (DataRow row in datos.Rows)
                {
                    SqlParameter param1 = new SqlParameter(FPR_ID_PARAM, row[CofinanciacionProgramasData.FPR_ID_FIELD]);
                    SqlParameter param2;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_TERRITORIAL_COFINANCION_VALOR_FIELD] == null || row[CofinanciacionProgramasData.FPR_ENTIDAD_TERRITORIAL_COFINANCION_VALOR_FIELD].ToString() == "")
                    {
                        param2 = new SqlParameter(FPR_ENTIDAD_TERRITORIAL_COFINANCION_VALOR_PARAM, DBNull.Value);
                    }
                    else
                    {
                        param2 = new SqlParameter(FPR_ENTIDAD_TERRITORIAL_COFINANCION_VALOR_PARAM, row[CofinanciacionProgramasData.FPR_ENTIDAD_TERRITORIAL_COFINANCION_VALOR_FIELD]);
                    }


                    SqlParameter param3;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_FIELD] == null || row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_FIELD].ToString() == "")
                    {
                        param3 = new SqlParameter(FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_PARAM, DBNull.Value);
                    }
                    else
                    {
                        param3 = new SqlParameter(FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_PARAM,
                                                           row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_FIELD]);
                    }

                    SqlParameter param4;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_PAIS_FIELD] == null || row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_PAIS_FIELD].ToString() == "")
                    {
                        param4 = new SqlParameter(FPR_ENTIDAD_COOPINTERNACIONAL_PAIS_PARAM, DBNull.Value);
                    }
                    else
                    {
                        param4 = new SqlParameter(FPR_ENTIDAD_COOPINTERNACIONAL_PAIS_PARAM,
                                                              row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_PAIS_FIELD]);
                    }
                    SqlParameter param5;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_FIELD] == DBNull.Value || row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_FIELD].ToString() == "")
                    {
                        param5 = new SqlParameter(FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_VALOR_PARAM, DBNull.Value);
                    }
                    else
                    {
                        param5 = new SqlParameter(FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_VALOR_PARAM, row[CofinanciacionProgramasData.FPR_ENTIDAD_COOPINTERNACIONAL_COFINANCION_VALOR_FIELD]);
                    }
                    SqlParameter param6;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_FIELD] == null || row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_FIELD].ToString() == "")
                    {
                        param6 = new SqlParameter(FPR_ENTIDAD_OTRA_COFINANCION_PARAM, DBNull.Value);
                    }
                    else
                    {
                        param6 = new SqlParameter(FPR_ENTIDAD_OTRA_COFINANCION_PARAM,
                                                           row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_FIELD]);
                    }


                    SqlParameter param7;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_VALOR_FIELD] == null || row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_VALOR_FIELD].ToString() == "")
                        param7 = new SqlParameter(FPR_ENTIDAD_OTRA_COFINANCION_VALOR_PARAM, DBNull.Value);
                    else
                        param7 = new SqlParameter(FPR_ENTIDAD_OTRA_COFINANCION_VALOR_PARAM, row[CofinanciacionProgramasData.FPR_ENTIDAD_OTRA_COFINANCION_VALOR_FIELD]);

                    SqlParameter param8;
                    if (row[CofinanciacionProgramasData.FPR_ENTIDAD_TERRITORIAL_COFINANCION_FIELD] == null || row[CofinanciacionProgramasData.FPR_ENTIDAD_TERRITORIAL_COFINANCION_FIELD].ToString() == "")
                        param8 = new SqlParameter(FPR_ENTIDAD_TERRITORIAL_COFINANCION_PARAM, DBNull.Value);
                    else
                        param8 = new SqlParameter(FPR_ENTIDAD_TERRITORIAL_COFINANCION_PARAM, row[CofinanciacionProgramasData.FPR_ENTIDAD_TERRITORIAL_COFINANCION_FIELD]);


                    SqlParameter param9 = new SqlParameter(SPZ_ID_PARAM, row[CofinanciacionProgramasData.SPZ_ID_FIELD]);

                    SqlParameter[] parameters = {
                                                    param1, param2, param3, param4, param5, param6, param7, param8, param9
                                                };

                    if (objTransaction.Length == 0)
                    {
                        SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure,
                                                  "PAS_ACTUALIZAR_SIG_COFINANCIACION_PROGRAMAS", parameters);
                    }
                    else
                    {
                        SqlHelper.ExecuteNonQuery(objTransaction[0], CommandType.StoredProcedure,
                                                  "PAS_ACTUALIZAR_SIG_COFINANCIACION_PROGRAMAS", parameters);
                    }

                    decIdentificador = decimal.Parse(param1.Value.ToString());
                }
                return (decIdentificador);

            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ACTUALIZAR_SIG_COFINANCIACION_PROGRAMAS"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", GetType().FullName), ex);
            }
        }

        #endregion

        #region EliminarCofinanciacionProgramas

        public void EliminarCofinanciacionProgramas(string parFPR_ID, params SqlTransaction[] objTransaction)
        {
            try
            {

                SqlParameter param1 = new SqlParameter(FPR_ID_PARAM, parFPR_ID);
                SqlParameter[] parameters = { param1 };
                if (objTransaction.Length == 0)
                {
                    SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure, "PAS_ELIMINAR_SIG_COFINANCIACION_PROGRAMAS", parameters);
                }
                else
                {
                    SqlHelper.ExecuteNonQuery(objTransaction[0], CommandType.StoredProcedure, "PAS_ELIMINAR_SIG_COFINANCIACION_PROGRAMAS", parameters);
                }

            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ELIMINAR_SIG_COFINANCIACION_PROGRAMAS"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", GetType().FullName), ex);
            }
        }

        #endregion

        #region EliminarCofinanciacionProgramas

        public void EliminarCofinanciacionProgramasSPZ(string parSPZ_ID, params SqlTransaction[] objTransaction)
        {
            try
            {

                SqlParameter param1 = new SqlParameter(SPZ_ID_PARAM, parSPZ_ID);
                SqlParameter[] parameters = { param1 };
                if (objTransaction.Length == 0)
                {
                    SqlHelper.ExecuteNonQuery(CadenaConexion, CommandType.StoredProcedure, "PAS_ELIMINAR_SIG_COFINANCIACION_PROGRAMAS_SPZ_ID", parameters);
                }
                else
                {
                    SqlHelper.ExecuteNonQuery(objTransaction[0], CommandType.StoredProcedure, "PAS_ELIMINAR_SIG_COFINANCIACION_PROGRAMAS_SPZ_ID", parameters);
                }

            }
            catch (SqlException sqlEx)
            {
                throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ELIMINAR_SIG_COFINANCIACION_PROGRAMAS_SPZ_ID"), sqlEx);
            }
            catch (Exception ex)
            {
                throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", GetType().FullName), ex);
            }
        }

        #endregion


    }
}